<?php

namespace Maestros\Controller\Service;

use Zend\Db\Adapter\Adapter;
use Componentes\Controller\UtilsArrayController;
use Maestros\Model\Entity\CuposSeccion;
use Maestros\Controller\Service\GenericService;
use Maestros\Model\Dao\CuposSeccionDAO;

//SERVICIO
class CuposSeccionService extends GenericService {

    /**
     * @var Zend\Db\Adapter\Adapter 
     */
    private $dbAdapter;
    private static $cuposSeccionService;

    /**
     * @param \Zend\Db\Adapter\Adapter $dbAdapter
     */
    private function __construct(Adapter $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
    }

    public static function getInstance($adapter) {
        if (self::$cuposSeccionService == null) {
            self::$cuposSeccionService = new CuposSeccionService($adapter);
        }
        return self::$cuposSeccionService;
    }

    public function getCuposSeccionDao() {
        return CuposSeccionDAO::getInstance($this->dbAdapter);
    }

    /**
     * @param type $id
     * @return type
     */
    public function getRegistro($id) {
        $data = null;
        $mensaje = 'CUPO DE SECCION NO ENCONTRADO';
        $success = false;
        $cuposSeccion = $this->obtenerCuposSeccionSegunId($id);
        if ($cuposSeccion->getId() != null) {
            $data[0] = $cuposSeccion->objectToArray();
            $success = true;
            $mensaje = 'CUPO DE SECCION ENCONTRADO';
        }
        $output = array(
            'success' => $success,
            'data' => $data,
            'total' => count($data),
            'mensaje' => $mensaje
        );
        return $output;
        //return UtilsArrayController::organizarOutput($success, $data, null);
    }

//POR HACER
    public function getRegistroCompleto($id) {
        $registros = $this->obtenerCuposSeccionSegunId($id);
        $data[0] = $registros->objectToArray();
        return UtilsArrayController::organizarOutput(true, $data, null);
    }


//------Retornan los objetos-------

    public function obtenerCuposSeccionSegunId($id) {
        $registros = $this->getCuposSeccionDao()->getRegistro($id);
        $data = UtilsArrayController::llenarData($registros);
        $cuposSeccion = new CuposSeccion($data[0]);
        $cuposSeccion->setCapacidadtotal($data[0]['capacidad_total']);
        $cuposSeccion->setCantidadInscritos($data[0]['cantidad_inscritos']);
        return $cuposSeccion;
    }
    
    public function updateCuposSeccionActualizar($id,$accion,$cantidad_inscritos) {
        $registros = $this->getCuposSeccionDao()->updateCuposSeccionActualizar($id,$accion,$cantidad_inscritos);
    }

}
